﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

using SIMA.Client.Auxiliars.MVVM;
using SIMA.Core.Enums;
using SIMA.Core.Extension;
using SIMA.Entities;


namespace SIMA.Client.Trabajos_de_Mantenimiento
{
    /// <summary>
    /// Lógica de interacción para frmGestionarTiposDeMantenimiento.xaml
    /// </summary>
    public partial class frmGestionarTiposDeMantenimiento : UserControl
    {
        AdminTipoMantenimientoMvvm mvvmAdminTipoMantenimiento;

        public frmGestionarTiposDeMantenimiento()
        {
            InitializeComponent();
            Init();
        }

        #region Private Methods
        
        private void Init()
        {
            mvvmAdminTipoMantenimiento = new AdminTipoMantenimientoMvvm();
            LayoutRoot.DataContext = mvvmAdminTipoMantenimiento;
        }
        private void Clean()
        {
            txtDescripcionTipoMantenimiento.Clear();
            txtNombreTipoMantenimiento.Clear();
            cmbEstadoTipoMantenimiento.SelectedItem = null;
            dgTipoMantenimiento.SelectedItem = null;
        }

        private void btnGuardar_Click(object sender, RoutedEventArgs e)
        {
            if (dgTipoMantenimiento.SelectedItem != null)
            {
                //Se hace update
                T_C_TipoMantenimiento itemToUpdate = (dgTipoMantenimiento.SelectedItem as T_C_TipoMantenimiento);
                T_C_TipoMantenimiento itemUpdated = (dgTipoMantenimiento.SelectedItem as T_C_TipoMantenimiento).Clone();
                itemUpdated.Descripcion = txtDescripcionTipoMantenimiento.Text;
                itemUpdated.Nombre = txtNombreTipoMantenimiento.Text;
                //itemUpdated.Id_Estado = (cmbEstadoTipoMantenimiento.SelectedItem as T_C_Estado).Id_Estado;
                this.mvvmAdminTipoMantenimiento.Update(itemToUpdate, itemUpdated);
                Clean();
            }
            else
            {
                //Se crea un nuevo registro en la base de datos
                T_C_TipoMantenimiento nuevoTipoMantenimiento = new T_C_TipoMantenimiento();
                nuevoTipoMantenimiento.Nombre = txtNombreTipoMantenimiento.Text;
                nuevoTipoMantenimiento.Descripcion = txtDescripcionTipoMantenimiento.Text;
                //nuevoTipoMantenimiento.Id_Estado = (cmbEstadoTipoMantenimiento.SelectedItem as T_C_Estado).Id_Estado;
                this.mvvmAdminTipoMantenimiento.Register(nuevoTipoMantenimiento);
                Clean();
            }
        }

        private void btnEliminar_Click(object sender, RoutedEventArgs e)
        {
            this.mvvmAdminTipoMantenimiento.Delete(dgTipoMantenimiento.SelectedItem as T_C_TipoMantenimiento);
            Clean();
        }

        private void btmCancelar_Click(object sender, RoutedEventArgs e)
        {
            Clean();
        }

        #endregion

        private void cmbEstadoTipoMantenimiento_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {

        }

        private void cmbFiltroPorEstado_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            T_C_Estado estado = (T_C_Estado)cmbFiltroPorEstado.SelectedItem;
            switch (estado.Nombre_Estado)
            {
                case "Activo":
                    this.mvvmAdminTipoMantenimiento.Filtro = FilterType.Active;
                    break;
                case "Inactivo":
                    this.mvvmAdminTipoMantenimiento.Filtro = FilterType.Inactive;
                    break;
            }
        }

        private void dgTipoMantenimiento_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (dgTipoMantenimiento.SelectedItem != null)
            {
                T_C_TipoMantenimiento tipMan = (T_C_TipoMantenimiento)dgTipoMantenimiento.SelectedItem;
                txtNombreTipoMantenimiento.Text = tipMan.Nombre;
                txtDescripcionTipoMantenimiento.Text = tipMan.Descripcion;
                //cmbEstadoTipoMantenimiento.SelectedItem = ((List<T_C_Estado>)cmbEstadoTipoMantenimiento.ItemsSource).Where(es => es.Id_Estado == tipMan.Id_Estado).First();
            }
        }
        


    }
}
